热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

更多|书架_存储器层次结构

篇首语:本文由编程笔记#小编为大家整理,主要介绍了存储器层次结构相关的知识,希望对你有一定的参考价值。实际的软件开发过程中,常会遇到服务端请求响应时间长&#

篇首语:本文由编程笔记#小编为大家整理,主要介绍了存储器层次结构相关的知识,希望对你有一定的参考价值。


实际的软件开发过程中,常会遇到服务端请求响应时间长,吞吐率不够。
分析对应问题时,你肯定听过“主要瓶颈不在CPU,而在I/O”,存储很重要。


1 存储器的层次结构

存储器系统是通过各种不同方法和设备,一层层组合起来的系统。

常把CPU比做计算机的“大脑”,思考的东西,好比CPU的寄存器(Register)。寄存器与其说是存储器,更像是CPU本身一部分,只能存放极有限信息,但速度很快,和CPU同步。

大脑中的记忆好比CPU Cache(CPU高速缓存,简称为“缓存”)。CPU Cache用的一种SRAM(Static Random-Access Memory,静态随机存取存储器)芯片。


2 SRAM

“静态”,因为只要处在通电状态,里面数据就能保持存在。一旦断电,里面数据就丢失。
SRAM里,一个比特数据,需6~8个晶体管。所以SRAM存储密度不高。同样物理空间下,能存储数据有限。但SRAM电路简单,所以访问速度很快。

6个晶体管组成SRAM的一个比特:

CPU里通常有L1、L2、L3三层高速缓存。

每个CPU核心都有一块属于自己的L1高速缓存,通常分成:


  • 指令缓存
    存放CPU使用的指令
  • 数据缓存
    存放CPU使用的数据

这里的指令缓存和数据缓存,就来自哈佛架构。


  • L1 Cache往往嵌在CPU核心内部

    理解为我们的短期记忆

  • L2 Cache同样是每个CPU核心都有,往往不在CPU核心内部,访问速度比L1稍慢

  • L3 Cache通常是多个CPU核心共用,更大些,访问速度自然更慢些

    L2/L3 Cache理解成长期记忆

把内存当成我们拥有的书架。当我们记忆中没有资料时,可从书架拿书翻阅。这过程相当于,数据从内存中加载到CPU的寄存器和Cache中,然后通过“大脑”(CPU),进行处理和运算。


3 DRAM

内存用的DRAM(Dynamic Random Access Memory,动态随机存取存储器)芯片,比SRAM密度更高,有更大容量,比SRAM芯片便宜。

“动态”,因为需靠不断“刷新”,才能保持数据被存储。DRAM的一个比特,只需一个晶体管、一个电容就能存储。所以,DRAM在同样物理空间下,能存储数据更多,即存储“密度”更大。但数据存在电容,电容会不断漏电,所以需定时刷新充电,才能保持数据不丢失。DRAM的数据访问电路和刷新电路都比SRAM更复杂,访问延时更长。


4 存储器的层级结构

整个存储器的层次结构都类似SRAM和DRAM在性能、价格差异:


  • SRAM更贵,速度更快

    像大脑中的记忆

  • DRAM更便宜,容量更大

    像属于我们自己的书桌

大脑(CPU)中的记忆(L1 Cache),不仅受成本限制,更受物理限制,好比L1 Cache不仅昂贵,其访问速度和它到CPU的物理距离有关。芯片越大,总有部分离CPU的距离会变远。电信号的传输速度又受物理限制,没法超过光速。所以想要快,并非靠多花钱就能解决。

书房(即内存)空间有限,无法放下所有书(即数据)。若想扩大空间,相当于要多买几平方房子,成本很高。于是,想要放下更多书,就要寻找廉价方案。即公共图书馆,对内存来说:


  • SSD(Solid-state drive或Solid-state disk,固态硬盘)
  • HDD(Hard Disk Drive,硬盘)

这些被称为硬盘的外部存储设备,即公共图书馆。于是,就可去家附近图书馆借书。图书馆有更多空间(存储空间)和更多书(数据)。

而HDD则是一种完全符合“磁盘”名字的传统硬件。“磁盘”硬件结构决定它的访问速度受限于物理结构,最慢。


存储器层次关系图

从Cache、内存,到SSD和HDD硬盘。容量越小的设备速度越快,而且,CPU并不是直接和每一种存储器设备打交道,而是每一种存储器设备,只和它相邻的存储设备打交道。比如,CPU Cache是从内存里加载而来的,或者需要写回内存,并不会直接写回数据到硬盘,也不会直接从硬盘加载数据到CPU Cache中,而是先加载到内存,再从内存加载到Cache中。

这样,各个存储器只和相邻的一层存储器打交道,并且随着一层层向下,存储器的容量逐层增大,访问速度逐层变慢,而单位存储成本也逐层下降,也就构成了我们日常所说的存储器层次结构。


5 权衡价格和性能?

存储器在不同层级之间的性能差异和价格差异,都至少在一个数量级以上。L1 Cache的访问延时是1纳秒(ns),而内存就已经是100纳秒了。在价格上,这两者也差出了400倍。
各种存储器成本的对比表格

实际在进行电脑硬件配置的时候,会去组合配置各种存储设备。
如,一款入门级的惠普战66的笔记本电脑。今天在京东上的价格是4999人民币
Intle i5-8265U的CPU(这是一块4核的CPU)
这块CPU每个核有32KB,一共128KB的L1指令Cache。
同样,每个核还有32KB,一共128KB的L1数据Cache,指令Cache和数据Cache都是采用8路组相连的放置策略。
每个核有256KB,一共1MB的L2 Cache。L2 Cache是用4路组相连的放置策略。
最后还有一块多个核心共用的12MB的L3 Cache,采用的是12路组相连的放置策略。
8GB的内存
一块128G的SSD硬盘
一块1T的HDD硬盘

一台实际的计算机里面,越是速度快的设备,容量就越小。这里一共十多兆的Cache,成本只是几十美元。而8GB的内存、128G的SSD以及1T的HDD,大概零售价格加在一起,也就和我们的高速缓存的价格差不多。


6 总结

CPU比喻成高速运转的大脑,和大脑同步的寄存器(Register),就存放着当下正在思考和处理的数据。
L1-L3的CPU Cache,好比存放在我们大脑中的短期到长期的记忆。需要小小花费一点时间,就能调取并进行处理。

书桌书架就好比计算机的内存,能放下更多的书也就是数据,但是找起来和看起来就要慢上不少。
而图书馆更像硬盘这个外存,能够放下更多的数据,找起来也更费时间。
从寄存器、CPU Cache,到内存、硬盘,这样一层层下来的存储器,速度越来越慢,空间越来越大,价格也越来越便宜。

这三个“越来越”的特性,使得我们在组装计算机的时候,要组合使用各种存储设备。越是快且贵的设备,实际在一台计算机里面的存储空间往往就越小。而越是慢且便宜的设备,在实际组装的计算机里面的存储空间就会越大。



参考


  • Peter Novig的Teach Yourself Programming in Ten Years,这些数字随着摩尔定律的发展在不断缩小,但是在数量级上仍然有着很强的参考价值。
  • Jeff Dean的Build Software Systems at Google and Lessons Learned。这份PPT中不仅总结了这些数字,还有大量的硬件故障、高可用和系统架构的血泪经验。


推荐阅读
  • 一句话解决高并发的核心原则
    本文介绍了解决高并发的核心原则,即将用户访问请求尽量往前推,避免访问CDN、静态服务器、动态服务器、数据库和存储,从而实现高性能、高并发、高可扩展的网站架构。同时提到了Google的成功案例,以及适用于千万级别PV站和亿级PV网站的架构层次。 ... [详细]
  • 一、Hadoop来历Hadoop的思想来源于Google在做搜索引擎的时候出现一个很大的问题就是这么多网页我如何才能以最快的速度来搜索到,由于这个问题Google发明 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • 本文介绍了C#中生成随机数的三种方法,并分析了其中存在的问题。首先介绍了使用Random类生成随机数的默认方法,但在高并发情况下可能会出现重复的情况。接着通过循环生成了一系列随机数,进一步突显了这个问题。文章指出,随机数生成在任何编程语言中都是必备的功能,但Random类生成的随机数并不可靠。最后,提出了需要寻找其他可靠的随机数生成方法的建议。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 本文介绍了C#中数据集DataSet对象的使用及相关方法详解,包括DataSet对象的概述、与数据关系对象的互联、Rows集合和Columns集合的组成,以及DataSet对象常用的方法之一——Merge方法的使用。通过本文的阅读,读者可以了解到DataSet对象在C#中的重要性和使用方法。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • 基于事件驱动的并发编程及其消息通信机制的同步与异步、阻塞与非阻塞、IO模型的分类
    本文介绍了基于事件驱动的并发编程中的消息通信机制,包括同步和异步的概念及其区别,阻塞和非阻塞的状态,以及IO模型的分类。同步阻塞IO、同步非阻塞IO、异步阻塞IO和异步非阻塞IO等不同的IO模型被详细解释。这些概念和模型对于理解并发编程中的消息通信和IO操作具有重要意义。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 开发笔记:计网局域网:NAT 是如何工作的?
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了计网-局域网:NAT是如何工作的?相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 本文讨论了在openwrt-17.01版本中,mt7628设备上初始化启动时eth0的mac地址总是随机生成的问题。每次随机生成的eth0的mac地址都会写到/sys/class/net/eth0/address目录下,而openwrt-17.01原版的SDK会根据随机生成的eth0的mac地址再生成eth0.1、eth0.2等,生成后的mac地址会保存在/etc/config/network下。 ... [详细]
  • 关于CMS收集器的知识介绍和优缺点分析
    本文介绍了CMS收集器的概念、运行过程和优缺点,并解释了垃圾回收器的作用和实践。CMS收集器是一种基于标记-清除算法的垃圾回收器,适用于互联网站和B/S系统等对响应速度和停顿时间有较高要求的应用。同时,还提供了其他垃圾回收器的参考资料。 ... [详细]
author-avatar
河南的小人物
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有